package com.cool.shark.service;

import com.cool.shark.pojo.dto.UserChangeDto;
import com.cool.shark.pojo.dto.UserDto;
import com.cool.shark.pojo.entity.User;
import org.springframework.transaction.annotation.Transactional;

/**
 * @Name: UserService
 * @Author: 西风残叶
 * @Date: 2024/3/31 13:20
 * @Version: 1.0
 * @TODO: TODO
 */
@Transactional
public interface UserService {
    /**
     * 添加用户信息。
     *
     * @param userDto 用户数据传输对象，包含用户详细信息。
     *                该方法将用户信息保存到系统中，不返回任何结果。
     */
    void addUser(UserDto userDto);

    /**
     * 登录功能的实现。
     * 该方法接收一个用户信息对象（UserDto），用于验证用户身份并执行登录操作。
     *
     * @param userDto 用户信息对象，包含登录所需的用户标识和凭证等信息。
     *                用户信息对象的具体属性和结构由UserDto定义。
     * @return 无返回值。登录操作的结果通常通过其他方式（如日志、界面提示）呈现。
     */
    User login(UserDto userDto);
    /**
     * 计算用户数量。
     *
     * @return 返回用户数量的整型值。
     */
    int countUsers();

    /**
     * 计算购物车中的商品数量。
     *
     * @return 返回购物车中商品数量的整型值。
     */
    int cartCount();

    void changePassword(UserChangeDto userDto);
}